package com.sgcc.pda.data.service;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.RemoteException;
import android.support.annotation.Nullable;

import com.sgcc.pda.data.IDataManager;
import com.sgcc.pda.data.util.db.ExceptionInfoUtil;
import com.sgcc.pda.mdrh.receiver.SystemExitReceiver;


/**
 * 数据服务.
 *
 * @author 王沛栋
 * @data 2018/1/12 16:25
 */

public class DataService extends Service {
    private DataBinder mBinder;
    // 系统退出广播接收器
    private SystemExitReceiver mSystemExitReceiver;

    @Override
    public void onCreate() {
        super.onCreate();
        mBinder = new DataBinder();
        mSystemExitReceiver = SystemExitReceiver.registerReceiver(this);
    }

    @Override
    public void onDestroy() {
        SystemExitReceiver.unregisterReceiver(this, mSystemExitReceiver);
        super.onDestroy();
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return mBinder;
    }


    public class DataBinder extends IDataManager.Stub {

        @Override
        public boolean saveExceptionInfo(String userid, String detail, String data,
                                         String status, String etype) throws RemoteException {
            return ExceptionInfoUtil.saveExceptionInfo(
                    getApplicationContext(),
                    userid, detail, data, status, etype);
        }


////、、---------------------------------------------------------------------------------------------
//
//        /**
//         * 保存 权限数据信息
//         *
//         * @param authFlag     离线情况下为meter+协议号；在线为appType+orderNum
//         * @param codeIndex    保护码索引  1.0
//         * @param authNum      权限记录数
//         * @param mac          传输MAC  1.0
//         * @param authInfoJson
//         * @param key698       698密钥包  2.0
//         * @param keyType698   698密钥标识  2.0
//         * @param downTime     权限下载时间
//         * @return
//         * @throws RemoteException
//         */
//        @Override
//        public boolean saveMeterAuthInfo(String authFlag, String codeIndex, String authNum, String mac, String authInfoJson, String key698, String keyType698, String downTime) throws RemoteException {
//            List<MeterAuthInfo> meterAuthInfoList = new ArrayList<>();
//
//            MeterAuthInfo meterAuthInfo = new MeterAuthInfo();
//            meterAuthInfo.setORDER_FLAG(authFlag);
//            meterAuthInfo.setCODE_IDX(codeIndex);
//            meterAuthInfo.setAUTH_NUM(authNum);
//            meterAuthInfo.setMAC(mac);
//            meterAuthInfo.setPERSIST("");
//            meterAuthInfo.setKEY(key698);
//            meterAuthInfo.setKEY_TYPE(keyType698);
//            meterAuthInfo.setDOWNLOAD_TIME(downTime);
//
//            try {
//                JSONArray authDataArray = new JSONArray(authInfoJson);
//                for (int i = 0; i < authDataArray.length(); i++) {
//                    String disFactor = authDataArray.getJSONObject(i).optString("DIS_FACTOR");
//                    String authType = authDataArray.getJSONObject(i).optString("AUTH_TYPE");
//                    String authData = authDataArray.getJSONObject(i).optString("AUTH_DATA");
//                    String index = authDataArray.getJSONObject(i).optString("IDX");//索引目录  1.0
//                    String authIndex = authDataArray.getJSONObject(i).optString("AUTH_IDX");//权限索引  1.0
//                    String code = authDataArray.getJSONObject(i).optString("CODE");//保护码  1.0
//
//                    meterAuthInfo.setDIS_FACTOR(disFactor);
//                    meterAuthInfo.setAUTH_TYPE(authType);
//                    meterAuthInfo.setAUTH_DATA(authData);
//                    meterAuthInfo.setIDX(index);
//                    meterAuthInfo.setAUTH_IDX(authIndex);
//                    meterAuthInfo.setCODE(code);
//                    meterAuthInfoList.add(meterAuthInfo);
//                }
//            } catch (JSONException e) {
//                e.printStackTrace();
//            }
//            return DBCommit.getMeterAuthInfoDBManager(getApplicationContext()).insertMeterAuthInfoList(meterAuthInfoList);
//        }
//
//        /**
//         * 获取数据库中的电表权限
//         *
//         * @param meterAuthFlag 离线情况下为meter+协议号；在线为appType+orderNum
//         * @return 电表权限信息的json数据集
//         * @throws RemoteException
//         */
//        @Override
//        public String getMeterAuthInfoJsonByMeterAuthFlag(String meterAuthFlag) throws RemoteException {
//            List<MeterAuthInfo> meterAuthInfoList = DBCommit.getMeterAuthInfoDBManager(getApplicationContext()).findMeterAuthListByOrderFlag(meterAuthFlag);
//            return new Gson().toJson(meterAuthInfoList);
//        }
//
//        /**
//         * 插入业务信息
//         *
//         * @param authFlag             APPTYPE+ORDER
//         * @param taskType             任务类型
//         * @param taskData             任务数据
//         * @param meterAddress         表地址
//         * @param terminalLogicAddress 终端逻辑地址   终端数据读取业务
//         * @param readDates            抄读集合
//         * @param meterAgreement       表协议
//         * @param consNo               客户编号  开户充值业务
//         * @param fillMoney            充值金额   开户充值业务
//         * @param fillNum              充值次数  开户充值业务
//         * @param endTime              截止时间  2.0  时钟设置业务
//         * @param meterAuthJson        电表权限数据
//         * @return
//         * @throws RemoteException
//         */
//        @Override
//        public boolean insertBusiInfoObject(String authFlag, String taskType, String taskData, String meterAddress, String terminalLogicAddress, String readDates, String meterAgreement, String consNo, String fillMoney, String fillNum, String endTime, String meterAuthJson) throws RemoteException {
//            BusiInfo busiInfo = new BusiInfo();
//            busiInfo.setORDER_FLAG(authFlag);
//            busiInfo.setTASK_TYPE(taskType);//任务类型
//            busiInfo.setTASK_DATA(taskData);//任务数据
//            busiInfo.setMETER_NO(meterAddress);//表地址
//            busiInfo.setTERMINAL_ADDRESS(terminalLogicAddress);//终端逻辑地址   终端数据读取业务
//            busiInfo.setREAD_DATES(readDates);//抄读数据集合
//            busiInfo.setMETER_AGREEMENT(meterAgreement);//表协议
//            busiInfo.setCUSTOM_ID(consNo);//客户编号  开户充值业务
//            busiInfo.setRECHARGE_MONEY(fillMoney);//充值金额   开户充值业务
//            busiInfo.setRECHARGE_TIME(fillNum);//充值次数  开户充值业务
//            busiInfo.setDEADLY_TIME(endTime);//截止时间  2.0  时钟设置业务
//            NewMeterAuth meterAuth = new Gson().fromJson(meterAuthJson, NewMeterAuth.class);
//            if (meterAuth != null) {
//                NewMeterAuth.Keys keys = meterAuth.getKEYS();
//                busiInfo.setWEEK(new Gson().toJson(keys.getOUT_DATA()));
//                busiInfo.setPROTECTED_CODE(keys.getPROTECTED_CODE());
//                String readFillTaskData = TextUtils.isEmpty(keys.READ_TASK_DATA) ? "" : keys.READ_TASK_DATA + "#";
//                busiInfo.setSERVER_DATA(readFillTaskData + keys.getTASK_DATA());
//                busiInfo.setMAC1(keys.getMAC1());
//                busiInfo.setMAC2(keys.getMAC2());
//                busiInfo.setKEYS(new Gson().toJson(keys));
//            } else {
//                LogUtil.i("meterAuth == null");
//            }
//            return DBCommit.getBusiInfoDBManager(getApplicationContext()).insertBusiInfoObject(busiInfo);
//        }
//
//        /**
//         * 通过APPTYPE + 订单号，获取业务信息
//         *
//         * @param orderFlag APPTYPE + 订单号
//         * @return BusiInfo 的json字符串
//         */
//        @Override
//        public String getBusiInfoByOrderFlag(String orderFlag) {
//            BusiInfo busiInfo = DBCommit.getBusiInfoDBManager(getApplicationContext()).findObject(orderFlag);
//            return new Gson().toJson(busiInfo);
//        }

    }
}
